package org.itheima56.version;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity
{

	private TextView	tv;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (TextView) findViewById(R.id.tv);

	}

	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
	public void clickStart(View view)
	{
		// 异步任务

		// 执行顺序 onPreExecute --》 doInBackground --》 onPostExecute
		// 参数：
		// 1: 执行任务传人的参数,doInBackground的参数
		// 2: 执行的进度 onProgressUpdated的参数
		// 3: 执行结果参数，是doInBackground的返回值，是onPostExecute的参数
		AsyncTask<String, Integer, Long> task = new AsyncTask<String, Integer, Long>() {

			@Override
			protected void onPreExecute()
			{
				super.onPreExecute();
				// 准备执行耗时操作前，是在主线程中执行的

				tv.setText("开始加载");

			}

			@Override
			protected Long doInBackground(String... params)
			{
				// 是在子线程中执行的，执行耗时的操作

				for (int i = 0; i < 100; i++)
				{

					try
					{
						Thread.sleep(100);
					}
					catch (InterruptedException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

					publishProgress(i);

				}

				return 1000l;
			}

			@Override
			protected void onProgressUpdate(Integer... values)
			{
				super.onProgressUpdate(values);

				// 在主线程中执行,如果想触发他，需要调用publishProgress()

				tv.setText(values[0] + "");

			}

			@Override
			protected void onPostExecute(Long result)
			{
				super.onPostExecute(result);

				// 是在主线程中执行，耗时操作完成后的回调

				tv.setText("" + result);
			}
		};

		if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB)
		{
			// 3.0以上
			task.executeOnExecutor(Executors.newFixedThreadPool(3));
		}
		else
		{
			task.execute();
		}
	}
}
